home *** CD-ROM | disk | FTP | other *** search
/ 1,000+ Hot Games / 1000-Plus-Hot-Games-1999.zip / 1000+ Hot Games (1999) / PROGRAMS / CARDWS17 / TILES.CDL < prev    next >
Text File  |  1994-03-26  |  7KB  |  309 lines

  1. //⌐ David Jean, 1993
  2. game tiles is 93 by 51;
  3.  
  4. // A1
  5. // A2 A10
  6. // A3 A11 A16
  7. // A4 A12 A17 A20
  8. //A9     A22     A0
  9. // A5 A13 A18 A21
  10. // A6 A14 A19
  11. // A7 A15
  12. // A8
  13.  
  14. // attention les pile Θtant lhorizontal les cartes
  15. // sont numΘrotΘe de droite a gauche...
  16.  
  17. {--------------------------------------------------------------------------}
  18.  
  19. #include 'tiles.cdh'
  20.  
  21. stack A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13,
  22.       A14, A15, A16, A17, A18, A19, A20, A21, A22;
  23.  
  24. const alls := |A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,A15,A16,A17,A18,A19,A20,A21,A22|;
  25.  
  26. {--------------------------------------------------------------------------}
  27.  
  28. stack A1 is
  29.   X := 8;
  30.   Y := 2;
  31.   Direction := lhorizontal;
  32.   W := 73;
  33.   H := 7;
  34.   Handler := tile;
  35.   Size := 12;
  36.   //****************************
  37.   Start is TilesInit;
  38.   //****************************
  39.   SelectLeft(Spos : Index) is SelectTile(Spos);
  40.   //****************************
  41.   SelectRight(Spos : Index) is ShowAll(alls);
  42.   //****************************
  43.   CanReceive : Index is
  44.     if IsEmpty?(1,!) then return PutIn(1,!)
  45.     else if random(2)=0 then return SlideL2R(1,!)
  46.     else return SlideR2L(1,!);
  47.   //****************************
  48.   IsFree?(l : Index) is
  49.     if ([l]=EmptyTile) or ((l<>Left) and (l<>Right)) then return FALSE
  50.     else return TRUE;  
  51. end A1;
  52.  
  53.  
  54. stack A2 from A1 is
  55.   X := 20;
  56.   Y := 8;
  57.   W := 49;
  58.   Size := 8;
  59.   //****************************
  60.   IsFree?(l : Index) is return IsCover?(A10,l,-1);
  61. end A2;
  62.  
  63. stack A3 from A1 is
  64.   X := 14;
  65.   Y := 14;
  66.   W := 61;
  67.   Size := 10;
  68.   //****************************
  69.   IsFree?(l : Index) is return IsCover?(A11,l,-2);
  70. end A3;
  71.  
  72. stack A4 from A1 is
  73.   X := 8;
  74.   Y := 20;
  75.   W := 73;
  76.   Size := 12;
  77.   //****************************
  78.   IsFree?(l : Index) is 
  79.     if (l=Left) and (l=1) then
  80.       if A0[2]=EmptyTile then return TRUE
  81.       else return FALSE
  82.     else if (l=Right) and (Right=Size) then
  83.       if A9[1]=EmptyTile then return TRUE
  84.       else return FALSE
  85.     else return IsCover?(A12,l,-3);
  86. end A4;
  87.  
  88. stack A5 from A1 is
  89.   X := 8;
  90.   Y := 26;
  91.   W := 73;
  92.   Size := 12;
  93.   //****************************
  94.   IsFree?(l : Index) is 
  95.     if (l=Left) and (l=1) then
  96.       if A0[2]=EmptyTile then return TRUE
  97.       else return FALSE
  98.     else if (l=Right) and (Right=Size) then
  99.       if A9[1]=EmptyTile then return TRUE
  100.       else return FALSE
  101.     else return IsCover?(A13,l,-3);
  102. end A5;
  103.  
  104. stack A6 from A1 is
  105.   X := 14;
  106.   Y := 32;
  107.   W := 61;
  108.   Size := 10;
  109.   //****************************
  110.   IsFree?(l : Index) is return IsCover?(A14,l,-2);
  111. end A6;
  112.  
  113. stack A7 from A1 is
  114.   X := 20;
  115.   Y := 38;
  116.   W := 49;
  117.   Size := 8;
  118.   //****************************
  119.   IsFree?(l : Index) is return IsCover?(A15,l,-1);
  120. end A7;
  121.  
  122. stack A8 from A1 is
  123.   X := 8;
  124.   Y := 44;
  125.   W := 73;
  126.   Size := 12;
  127. end A8;
  128.  
  129. stack A0 from A1 is
  130.   X := 80;
  131.   Y := 23;
  132.   W := 13;
  133.   Size := 2;
  134.   //****************************
  135.   CanReceive : Index is
  136.     if (A4[1]=EmptyTile) or (A5[1]=EmptyTile) then return 0
  137.     else return SlideL2R(1,2);
  138.   //****************************
  139.   IsFree?(l : Index) is 
  140.     if l=1 then return TRUE
  141.     else if [1]=EmptyTile then return TRUE
  142.     else return FALSE;
  143. end A0;
  144.  
  145. stack A9 from A1 is
  146.   X := 2;
  147.   Y := 23;
  148.   W := 7;
  149.   Size := 1;
  150.   //****************************
  151.   CanReceive : Index is
  152.     if (A4[12]=EmptyTile) or (A5[12]=EmptyTile) then return 0
  153.     else return SlideR2L(1,1);
  154.   //****************************
  155.   IsFree?(l : Index) is return TRUE;
  156. end A9;
  157.  
  158. stack A10 from A1 is
  159.   X := 27;
  160.   Y := 7;
  161.   W := 37;
  162.   Size := 6;
  163.   //****************************
  164.   CanReceive : Index is return CoverRC(A2,2,7,1);
  165. end A10;
  166.  
  167. stack A11 from A1 is
  168.   X := 27;
  169.   Y := 13;
  170.   W := 37;
  171.   Size := 6;
  172.   //****************************
  173.   CanReceive : Index is return CoverRC(A3,3,8,2);  
  174.   //****************************
  175.   IsFree?(l : Index) is return IsCover?(A16,l,-1);
  176. end A11;
  177.  
  178. stack A12 from A1 is
  179.   X := 27;
  180.   Y := 19;
  181.   W := 37;
  182.   Size := 6;
  183.   //****************************
  184.   CanReceive : Index is return CoverRC(A4,4,9,3);  
  185.   //****************************
  186.   IsFree?(l : Index) is return IsCover?(A17,l,-1);
  187. end A12;
  188.  
  189. stack A13 from A1 is
  190.   X := 27;
  191.   Y := 25;
  192.   W := 37;
  193.   Size := 6;
  194.   //****************************
  195.   CanReceive : Index is return CoverRC(A5,4,9,3);  
  196.   //****************************
  197.   IsFree?(l : Index) is return IsCover?(A18,l,-1);
  198. end A13;
  199.  
  200. stack A14 from A1 is
  201.   X := 27;
  202.   Y := 31;
  203.   W := 37;
  204.   Size := 6;
  205.   //****************************
  206.   CanReceive : Index is return CoverRC(A6,3,8,2);  
  207.   //****************************
  208.   IsFree?(l : Index) is return IsCover?(A19,l,-1);
  209. end A14;
  210.  
  211. stack A15 from A1 is
  212.   X := 27;
  213.   Y := 37;
  214.   W := 37;
  215.   Size := 6;
  216.   //****************************
  217.   CanReceive : Index is return CoverRC(A7,2,7,1);  
  218. end A15;
  219.  
  220. stack A16 from A1 is
  221.   X := 34;
  222.   Y := 12;
  223.   W := 25;
  224.   Size := 4;
  225.   //****************************
  226.   CanReceive : Index is return CoverRC(A11,2,5,1);  
  227. end A16;
  228.  
  229. stack A17 from A1 is
  230.   X := 34;
  231.   Y := 18;
  232.   W := 25;
  233.   Size := 4;
  234.   //****************************
  235.   CanReceive : Index is return CoverRC(A12,2,5,1);  
  236.   //****************************
  237.   IsFree?(l : Index) is return IsCover?(A20,l,-1);
  238. end A17;
  239.  
  240. stack A18 from A1 is
  241.   X := 34;
  242.   Y := 24;
  243.   W := 25;
  244.   Size := 4;
  245.   //****************************
  246.   CanReceive : Index is return CoverRC(A13,2,5,1);  
  247.   //****************************
  248.   IsFree?(l : Index) is return IsCover?(A21,l,-1);
  249. end A18;
  250.  
  251. stack A19 from A1 is
  252.   X := 34;
  253.   Y := 30;
  254.   W := 25;
  255.   Size := 4;
  256.   //****************************
  257.   CanReceive : Index is
  258.     return CoverRC(A14,2,5,1);  
  259. end A19;
  260.  
  261. stack A20 from A1 is
  262.   X := 41;
  263.   Y := 17;
  264.   W := 13;
  265.   Size := 2;
  266.   //****************************
  267.   CanReceive : Index is return CoverRC(A17,2,3,1);  
  268.   //****************************
  269.   IsFree?(l : Index) is return A22[1]=EmptyTile;
  270. end A20;
  271.  
  272. stack A21 from A1 is
  273.   X := 41;
  274.   Y := 23;
  275.   W := 13;
  276.   Size := 2;
  277.   //****************************
  278.   CanReceive : Index is return CoverRC(A18,2,3,1);  
  279.   //****************************
  280.   IsFree? from A20;
  281. end A21;
  282.  
  283. stack A22 from A1 is
  284.   X := 45;
  285.   Y := 19;
  286.   W := 7;
  287.   Size := 1;
  288.   //****************************
  289.   Start is
  290.     begin
  291.     TilesInit;
  292.     TilesShuffle(alls);
  293.     end;
  294.   //****************************
  295.   CanReceive : Index is
  296.     if ([1]<>EmptyTile) or
  297.        (A20[1]=EmptyTile) or (A20[2]=EmptyTile) or
  298.        (A21[1]=EmptyTile) or (A21[2]=EmptyTile) then return 0
  299.     else return 1;
  300.   //****************************
  301.   IsFree?(l : Index) is return TRUE;
  302. end A22;
  303.  
  304. {--------------------------------------------------------------------------}
  305.  
  306. order A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13,
  307.       A14, A15, A16, A17, A18, A19, A20, A21, A22;
  308.   title:='Tiles'.
  309.